﻿using UnityEngine;
using System.Collections;

public class Movement : MonoBehaviour {
	
	public static Vector3 zz;
	public static Vector3 menos;
	public static Vector3 xx; 
	public static Vector3 runner_position; 
	public static Vector3 obstaculo_position;
	public static Vector3 test = new Vector3(3f,0,0);
	public static Vector3 up = new Vector3(0,4f,0);
	public Transform player;
	public Transform enemy;
	
	bool perseguirJogadorADireita;
	
	bool perseguirJogadorAEsquerda;
	
	public static float velocidade = 5.0f;

	// Use this for initialization
	void Start () {
		
	}
	
	public void zzzzz()
	{
		print("zz");
	}	
	
	// Update is called once per frame
	void Update ()
	{
		DecidirSeJogadorEstaADireitaOuEsquerda();
		//perseguir();
		//RayCast();
		//RayCast2();
		
		//Debug.Log("DIREITA: " + perseguirJogadorADireita);
		
		
		//Debug.Log("ESQUERDA: " + perseguirJogadorAEsquerda);
	}
	
	void DecidirSeJogadorEstaADireitaOuEsquerda()
	{
		Vector3 direita = transform.TransformDirection(Vector3.right);
		
		RaycastHit hit;
		
		Vector3 esquerda = transform.TransformDirection(Vector3.left);
		
		RaycastHit hit2;
		
		if(Physics.Raycast(transform.position, direita, out hit, 50.0f))
		{	
			perseguirJogadorADireita = true;
			perseguirJogadorAEsquerda = false;
		}
		else if (Physics.Raycast(transform.position, esquerda, out hit2, 50.0f))
		{	
			perseguirJogadorADireita = false;
			perseguirJogadorAEsquerda = true; 
		}
		
		//1- da ruim qd eu volto pro lado q estava antes
		
		//2- trocar raycast por sphere collider
	}
	
	void RayCast()
	{		
		Vector3 rh3 = transform.TransformDirection(Vector3.right);
		
		RaycastHit hit;
		
		if (Physics.Raycast(transform.position, rh3, out hit, 50.0f))
		{
			string test = hit.transform.gameObject.tag;
						
			if(test == "Player")
			{
				Debug.Log("Achei RAYCAST");
				obstaculoseguir();				
			}

		}
	}
		
	void RayCast2()
	{		
		Vector3 rh4 = transform.TransformDirection(Vector3.left);
		
		RaycastHit hit2;
		
		if (Physics.Raycast(transform.position, rh4, out hit2, 50.0f))
		{
			string test2 = hit2.transform.gameObject.tag;
			
			
			if(test2 == "Player")
			{
				Debug.Log("Achei RAYCAST2");
				obstaculoseguir();				
			}
		}
	}
	
	void perseguir()
	{	
		if(perseguirJogadorADireita)
		{
			//mover o inimigo com a velocidade propria deste para a direita
			transform.position += new Vector3(velocidade * Time.deltaTime, 0, 0);
			Debug.Log("to indo pra direita atras de tu");
		}
		
		if(perseguirJogadorAEsquerda)
		{
			//mover o inimigo com a velocidade propria deste para a esquerda	
			
			transform.position += new Vector3(-velocidade * Time.deltaTime, 0, 0);
			
			Debug.Log("to indo pra esquerda atras de tu");
		}
	}
	
	void obstaculoseguir()
	{	
		//distance = Vector3.Distance(obstaculo_position, runner_position);
		
		runner_position = GameObject.FindGameObjectWithTag("Player").transform.position;
		test.x -= Time.deltaTime;
		zz = runner_position -= test;
		obstaculo_position = zz;
		
		GameObject.FindGameObjectWithTag("Inimigo").transform.position = obstaculo_position;
	}
	
	void OnTriggerStay(Collider other)
	{
		if(other.gameObject.tag == ("Player"))
			{
				Debug.Log("ACHEITRIGGER");
				perseguir();				
			}
}
}
